# 字典的相关函数

vart = {'name': 'Jack', 'age': 18, 'job': 'worker'}

# len(字典) #获取字典的键值对个数
# dict.keys() #获取当前字典的所有key键，组成的列表
# dict.values() #获取当前字典的所有value 值，组成的列表
# dict.items() #返回由字典项((键，值)对)组成的一个新列表

# iter(d) 返回以字典的键为元素的迭代器。
itert = iter(vart)
res = next(itert)
# name
res = next(itert)
# age

# dict.pop('key') 传递一个key值，弹出这个键值对 如果不存在报错
# print(vart.pop('job'))
# worker
# print(vart)
# {'name': 'Jack', 'age': 18}

# dict.popitem() LIFO: Last in, First out. 后进先出
# 把最后加入到字典中的键值对删除并返回一个元组
res = vart.popitem()
# ('job', 'worker')

# t.get(key[, value]) 获取字典中的key对应的值，如果不存在则返回None或者第二个参数
# 使用key获取字典中不存在元素，会报错
# print(vart['sex'])
# 可以使用 get 获取一个元素，存在则返回，不存在默认返回None，如果传递第二个参数则返回第二个参数
res = vart.get('sex')
# None
res = vart.get('name')
# Jack
res = vart.get('names', 'abc')
# abc

# dict.update(), 更新字典，如果key存在，则更新，对应的key不存在则添加
# 参数可以是一系列 键名=键值 。或者是一个字典
vart.update(name='Rose', sex='women')
# {'name': 'Rose', 'age': 18, 'sex': 'women'}
vart.update({'name': 'Jack', 'work': 'worker'})
# {'name': 'Jack', 'age': 18, 'sex': 'women', 'work': 'worker'}

# dict. setdefault(key[, default])
# 如果字典存在键key，返回它的值。
# 如果不存在，插入值为default 的键 key，value为None或者第二个参数，并返回value
res = vart.setdefault('name', '张三')
# Jack
res = vart.setdefault('height', '185cm')
# 185cm
# {'name': 'Jack', 'age': 18, 'sex': 'women', 'work': 'worker', 'height': '185cm'}

print(res)
print(vart)




